package com.canbot.u05.activity.customvoice.tool;

import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;

/**
 * Created by liu.heng on 2018/8/27.
 */

public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {

        private int     spanCount; //列数

        private int     spacing; //间隔

        private boolean includeEdge; //是否包含边缘

        public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
                this.spanCount = spanCount;
                this.spacing = spacing;
                this.includeEdge = includeEdge;
        }

        @Override
        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

                //这里是关键，需要根据你有几列来判断
                int position = parent.getChildAdapterPosition(view); // item position
                int column = position % spanCount; // item column

                if (includeEdge) {
                        outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
                        outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)

                        if (position < spanCount) { // top edge
                                outRect.top = spacing;
                        }
                        outRect.bottom = spacing; // item bottom
                }
                else {
                        outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
                        outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /    spanCount) * spacing)
                        if (position >= spanCount) {
                                outRect.top = spacing; // item top
                        }
                }
        }
}
